//package com.tyhy.jwt.utils;
//
//
//import io.jsonwebtoken.Claims;
//import io.jsonwebtoken.Jwts;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.codec.binary.Base64;
//
//import javax.crypto.SecretKey;
//import javax.crypto.spec.SecretKeySpec;
//import javax.servlet.http.HttpServletRequest;
//
///**
// * JWT工具类
// *
// * @author zhuxuejiang
// * @date 2020-02-29 09:23:19
// */
//@Slf4j
//public class JwtUtil {
//
//    public static final String JWT_USER_KEY_PRE="JWT_USER:";
//
//	/**
//	 * JWT秘钥
//	 *
//	 * @return
//	 */
//	public static SecretKey generalKey(String key) {
//		byte[] encodedKey = Base64.decodeBase64(key);
//		SecretKeySpec secretKey = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
//		return secretKey;
//	}
//
//	/**
//	 * 解密JWT
//	 *
//	 * @param key JWT秘钥
//	 * @param jwt JWT字符串
//	 * @return
//	 * @throws Exception
//	 */
//	public static Claims parseJwt(String key, String jwt) {
//		SecretKey secretKey = generalKey(key);
//		Claims claims = Jwts.parser()
//				.setSigningKey(secretKey)
//				.parseClaimsJws(jwt).getBody();
//		return claims;
//	}
//
//	/**
//	 * 获取用户真实ip
//	 * @param request   httprequest
//	 * @return {@link String}
//	 * @since 2020/7/25
//	 * 版本历史:
//	 * Date         Author         Description
//	 *---------------------------------------------------------*
//	 * 2020/7/25   chenxu          初始创建
//	 */
//    public static String getIPAddress(HttpServletRequest request) {
//        String ip = null;    //X-Forwarded-For：Squid 服务代理
//        String ipAddresses = request.getHeader("X-Forwarded-For");
//        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //Proxy-Client-IP：apache 服务代理
//            ipAddresses = request.getHeader("Proxy-Client-IP");
//        }
//        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //WL-Proxy-Client-IP：weblogic 服务代理
//            ipAddresses = request.getHeader("WL-Proxy-Client-IP");
//        }
//        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //HTTP_CLIENT_IP：有些代理服务器
//            ipAddresses = request.getHeader("HTTP_CLIENT_IP");
//        }
//        if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //X-Real-IP：nginx服务代理
//            ipAddresses = request.getHeader("X-Real-IP");
//        }    //有些网络通过多层代理，那么获取到的ip就会有多个，一般都是通过逗号（,）分割开来，并且第一个ip为客户端的真实IP
//        if (ipAddresses != null && ipAddresses.length() != 0) {
//            ip = ipAddresses.split(",")[0];
//        }    //还是不能获取到，最后再通过request.getRemoteAddr();获取
//        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
//            ip = request.getRemoteAddr();
//        }
//        return ip;
//    }
//}
//
